/**
 * 姓名
 * @param rule 验证规则（不含特殊字符）
 * @param value 需要验证的值
 * @param callback 回调函数
 */
export const validateUsername = (rule, value, callback) => {
    var reg = /^[a-zA-Z0-9_\u4e00-\u9fa5]{1,16}$/;
    if (value.length > 16) {
        callback(new Error('长度不能超过16个字符'));
    } else if (!reg.test(value)) {
        callback(new Error('仅支持大小写英文、中文和下划线_'));
    } else {
        callback();
    }
};

/**
 * 密码格式验证
 * @param rule 验证规则（不少于6位）
 * @param value 需要验证的值
 * @param callback 回调函数
 */
export const validatePassword = (rule, value, callback) => {
    // var reg = /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,.\/]).{6,16}$/;
    // var reg = /^[a-zA-Z0-9~!@#$%^&*()_+`\-={}:";'<>?,.\/]{6,16}$/;
    // var reg = /^(?=.*\d)(?=.*[a-zA-Z])(?=.*[~!@#$%^&*])[\da-zA-Z~!@#$%^&*]{6,16}$/;
    // const regex = /^(?=.*[a-zA-Z0-9])(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*.]{6,16}$/;
    // var reg =/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/
    // var reg =/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*()_+<>])(?=.*[a-zA-Z\d!@#$%^&*()_+<>])[a-zA-Z\d!@#$%^&*()_+<>]{6,16}$/;
    // var reg =/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&._])[A-Za-z\d@$!%*?&._]{8,18}$/;
    // var reg = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$/;
    var reg = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?#&._|])[a-zA-Z\d@$!%*#?&._|]{8,}$/;
    // var regLength = /^.{8,18}$/;
    // var regLength = /^.{8,18}$/;

    console.log(reg.test(value), '------tete');
    if (reg.test(value)) {
        callback();
    } else {
        callback(new Error('密码长度为8-20个字符码，且应为数字、字母大小和特殊字符混合组成'));
        // callback(new Error("密码长度不得小于8位，且仅支持大小写英文、数字和特殊字符"));
    }
    // if (value.length < 6) {
    //     callback(new Error('密码长度不得小于6位'));
    // } else if (!reg.test(value)) {
    //     callback(new Error('仅支持大小写英文、数字和特殊字符'));
    // } else {
    //     callback();
    // }
};

export const changeList = (rule, value, callback) => {
    var reg = /^.+$/;
    if (!reg.test(value)) {
        callback(new Error('毕业年度不能为空'));
    } else {
        callback();
    }
};
/**
 * 手机号码格式验证
 * @param rule 验证规则
 * @param value 需要验证的值
 * @param callback 回调函数
 */
export const validateMobile = (rule, value, callback) => {
    var reg = /^[1][3,4,5,6,7,8,9]\d{9}$/;
    if (!reg.test(value)) {
        callback(new Error('手机号格式错误'));
    } else {
        callback();
    }
};

// qq号码格式验证
export const qqMobile = (rule, value, callback) => {
    var reg = /^[0-9]{5,20}$/;
    if (!reg.test(value)) {
        callback(new Error('qq号格式错误'));
    } else {
        callback();
    }
};

/**
 * 手机号码非必填项格式验证
 * @param rule 验证规则
 * @param value 需要验证的值
 * @param callback 回调函数
 */
export const validateMobileNoBt = (rule, value, callback) => {
    if (value) {
        var reg = /^[1][3,4,5,6,7,8,9]\d{9}$/;
        if (!reg.test(value)) {
            callback(new Error('手机号格式错误'));
        } else {
            callback();
        }
    } else {
        callback();
    }
};

/**
 * 身份证号码格式验证
 * @param rule 验证规则（是否满足18位） 加入香港和澳门身份证格式
 * @param value 需要验证的值
 * @param callback 回调函数
 */
export const validateIDCard = (rule, value, callback) => {
    const reg = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
    const regHongkong = /^[A-Za-z]{1}\d{6}[(\d)|A]{3}$/;
    const regHongkong1 = /^[A-Z]{1,2}[0-9]{6,10}[0-9A-Z]$/;
    const regAomen = /^[1|5|7]\d{6}[(\d)]{3}$/;
    const regTaiwan = /^[A-Z]{1}\d{9}$/;

    if (reg.test(value) || regHongkong.test(value) || regAomen.test(value) || regTaiwan.test(value) || regHongkong1.test(value) || value == '' || value == undefined || value == null) {
        callback();
    } else {
        callback(new Error('身份证号码格式错误'));
    }
};

export const checkEmail = (rule, value, callback) => {
    const mailReg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/;
    if (!value) {
        return callback(new Error('邮箱不能为空'));
    }
    setTimeout(() => {
        if (mailReg.test(value)) {
            callback();
        } else {
            callback(new Error('请输入正确的邮箱格式'));
        }
    }, 100);
};
